An application server provides software applications with services such as security, data services, transaction support, load balancing and management of large distributed systems. One type of application server is the Java EE application server used to support the Java Platform, Enterprise Edition (Java EE). The Java EE application server can handle transactions, security, scalability, concurrency and management of the components that are deployed to the server in order to enable developers to concentrate more on the business logic of the components rather than on infrastructure and integration tasks.
Customers using legacy applications, such as Common Business-Oriented Language (COBOL), may desire to re-host such applications within a Java EE application server based upon the Java Virtual Machine (JVM) environment, where new developments are currently occurring, propel the adaptation of new technologies by legacy applications by leveraging the features provided in the modern Java EE application server environment.
In some implementations, there may be several hybrid application servers that are combined to form a “cluster.” Requests to these clusters may be routed through routing agents, such as a reverse proxy server (e.g., Hypertext Transfer Protocol (HTTP) proxy server). A proxy server is a specific type of application server that acts as an intermediary for requests from clients seeking resources. One type of proxy server is a HTTP proxy server that routes HTTP requests to applications within the cluster of hybrid application servers that perform the work.
In such an implementation, the routing agent redirects the incoming requests to various hybrid application servers within the cluster based on a chosen routing algorithm. If a request is received by a Java EE application (within the Java EE container of the hybrid application server) that makes a call to a non-Java application (within the non-Java container of the hybrid application server), then the request will be serviced by the non-Java application.
Currently, the routing agent, such as a proxy server, only has knowledge of the availability of the Java EE applications to service the requests by monitoring the JVMs and sending only those requests to the Java EE applications running on a JVM that is operating. Once the JVM becomes nonoperational, the JVM will be marked as unavailable by the proxy server.
If, however, the non Java container (For example CICS as an Enterprise Information System—EIS) wants to route the requests to Java container based cluster then the container would be a one to one connection between non-Java container (EIS) to Java container. So the one to one connection will bring the difficulty in clustered environment where every non-Java container should be configured with the communication information of every other Java containers which are present in the cluster. This will cause the difficulties in serviceability, scalability and high availability.